export  function equalsObj(oldData, newData) {
  //       类型为基本类型时,如果相同,则返回true
  if (oldData === newData) return true;
  if (
    isObject(oldData) &&
    isObject(newData) &&
    Object.keys(oldData).length === Object.keys(newData).length
  ) {
    //      类型为对象并且元素个数相同

    //      遍历所有对象中所有属性,判断元素是否相同
    for (const key in oldData) {
      if (oldData.hasOwnProperty(key)) {
        if (!equalsObj(oldData[key], newData[key]))
          //      对象中具有不相同属性 返回false
          return false;
      }
    }
  } else if (
    isArray(oldData) &&
    isArray(oldData) &&
    oldData.length === newData.length
  ) {
    //      类型为数组并且数组长度相同

    for (let i = 0, length = oldData.length; i < length; i++) {
      if (!equalsObj(oldData[i], newData[i]))
        //      如果数组元素中具有不相同元素,返回false
        return false;
    }
  } else {
    //      其它类型,均返回false
    return false;
  }

  //      走到这里,说明数组或者对象中所有元素都相同,返回true
  return true;
}


// 两个数组中的对象,一个大数组去掉小数组相同的
// 假如obj1里面有2个以上的{}时，且obj2也有{}，最终返回结果都会全部删除{}，
export function arrIsDiff(obj1, obj2) {
  for (var i of obj2) {
    var eq = false;
    for (var j of obj1) {
      var q = 0;
      if (
        Object.keys(i).length == Object.keys(j).length &&
        Object.keys(i).length == 0
      ) {
        obj1.splice(obj1.indexOf(j), 1);
      }
      if (Object.keys(j).length > 0) {
        for (var key in i) {
          var p = j.hasOwnProperty(key);
          if (p) {
            if (j[key] == i[key]) {
              q += 1;
            }
            if (q == Object.keys(i).length) {
              eq = true;
              if (eq) {
                obj3 = obj1.splice(obj1.indexOf(j), 1);
              }
            }
          }
        }
      }
    }
  }
}
